/**
 * Created by Ruzi on 2015/12/10.
 */


$(function(){




    $(".topo").click(function(){


        //1.判断服务器操作系统,ip地址,默认网关
        var server=server_info();
       // console.log("服务器信息",server);
        //{操作系统: "WINNT", 服务器地址: "::1", 服务器网关: "192.168.1.18"}


        //2.判断服务器的默认网关地址连接的设备
        var ip_unniq=[];
        var dv_info_snmp=[];
        if(server.length>1) {
            console.log("if:",server.length);
           for(var i=0;i<server.length;i++) {
               var url=server[i]["服务器网关"];
               ip_unniq[ip_unniq.length]=url;
           }

            for(var i=0;i<ip_unniq.length;i++) {
                var url=ip_unniq[i];
                var dv1=get_info(url,"public");
                if(dv1[0].success){
                 //   console.log("ip",urll," info:",dv1[0]);
                    dv_info_snmp[dv_info_snmp.length]=device_info(url);
                }
            }


        }else{

            console.log("else:",server[0]);
            var sv="操作系统"+server[0]["操作系统"]+" 服务器网关:"+server[0]["服务器网关"];
            $(".server_info").removeClass("hidden");
            $(".server_info").text(sv);
            if(server[0].success){}


            var url=server[0]["服务器网关"];

            var dv1=get_info(url,"public");
            console.log("dv1:",dv1);

            console.log("phase 1 complete");

            if(dv1.success){
                dv_info_snmp[dv_info_snmp.length]=device_info(url);
            }


            console.log("phase 2 complete");
            //var snmp_ok = main_detect(server[0]["服务器网关"]);
          //  console.log("满足snmp托扑发现算法:", snmp_ok);

            //4.网络设备下的ip地址等信息
            var ndv=net_device(server[0]["服务器网关"]);

           console.log("该默认网管下的所有设备ip",ndv,ndv["网络设备下的设备信息"][0]["ip_address"]);
            var ift="该默认网管下的所有设备ip数量:"+ndv["网络设备下的设备信息"][0]["ip_address"].length;
            $(".info").removeClass("hidden");
            $(".info").text(ift);

            console.log("phase 3 complete");
            var all_ip=ndv["网络设备下的设备信息"][0]["ip_address"];
            //console.log("网络设备下的设备信息--所有信息",ndv["网络设备下的设备信息"][0]);

            var snmp_cap=[];//所有设备中具备snmp功能的设备ip地址


            console.log("phase 4 complete");
            //5.查询网络设备下的设备信息
            $(".go").removeClass("hidden");

            for(var i=0;i<all_ip.length;i++){

                var rs1=check_topo_cap(all_ip[i]);

                //console.log("checking ip:",all_ip[i]);
                $(".go").text("checking ip "+all_ip[i]);

                var len=1;
                if(i>0){
                    len=(i/all_ip.length)*100;
                    if(len>100){
                        len=100;
                    }
                    if(len<10){
                        len=10;
                    }

                }

                $(".go").css("width",len+"%");

                if(rs1.success){
                   // console.log("snmp available ip:",all_ip[i]);
                    snmp_cap[snmp_cap.length]=all_ip[i];

                }


            }

            $(".go").text("check complete");


            console.log("phase 5 complete");
            console.log("具有snmp功能的设备",snmp_cap);
            $(".go_snmp").removeClass("hidden");
            $(".go_snmp").text("具有snmp功能的设备数量:"+snmp_cap.length);


            //6.判断具有snmp功能的设备
            //具有snmp功能的设备中的交换机，路由器
            var routers=[];
            var switchs=[];
            var airports=[];
            var others=[];

            var sr=[];
            sr[0]=url;
            console.log("phase 6 complete");

            //  console.log("",snmp_cap.length);
            for(var i=0;i<snmp_cap.length;i++){


                var info=get_info(snmp_cap[i],"public");
               // console.log("info",info);
                if(info.success){

                    if(info.sysType.indexOf("Router")>=0){
                        routers[routers.length]=info;

                        sr[sr.length]=snmp_cap[i];

                    }else if(info.sysType.indexOf("AirPort")>=0){

                        airports[airports.length]=info;
                        sr[sr.length]=snmp_cap[i];

                    }else if(info.sysType.indexOf("Switch")>=0){
                        switchs[switchs.length]=info;
                        sr[sr.length]=snmp_cap[i];

                    }else{
                        others[others.length]=info;
                        sr[sr.length]=snmp_cap[i];
                    }





                }

            }


            var origin=ndv["网络设备下的设备信息"][0]["ip_address"];

            console.log("默认网关连接的设备下的设备信息",origin);
            console.log("具有snmp功能的设备中的路由器",routers);
            console.log("具有snmp功能的设备中的交换机",switchs);
            console.log("具有snmp功能的设备中的无线热点",airports);
            console.log("具有snmp功能的设备中的其他设备",others);

            //7.默认网关连接的设备下的设备信息








            var origin1=main_detect(url);
            var origin_ip=ndv;



            console.log("phase 7 complete");

            console.log("网关设备",origin1);
            console.log("链接在网关的其他路由器和交换机信息",origin_ip);




            var m=[];

            var a=origin1.info;
            var b=origin_ip["网络设备下的设备信息"][0];

            for(var i=0;i<b["mac"].length;i++){
                var mac=b["mac"][i];
                var mtmp=mac.split(":");
                var mac1="";
                for(var p=0;p<mtmp.length;p++){
                    var tmp_p=mtmp[p];
                    if(mtmp[p].length==1){
                        tmp_p="0"+tmp_p;
                    }

                    if(p==(mtmp.length-1)){
                        mac1=mac1+tmp_p;
                    }else{
                        mac1=mac1+tmp_p+":";
                    }
                }

                var ip1=b["ip_address"][i];

                for(var j=0;j<a["mac"].length;j++){
                    var mac2=a["mac"][j];
                    var port1=a["port"][j];

                    if(mac1==mac2){

                        m[m.length]={"mac":mac2,"ip":ip1,"port":port1};

                    }
                }

            }


            console.log("数据:",m);

            console.log("交换机,无线ap,路由器",sr);

            $(".go_snmp").removeClass("hidden");

            var source_data=[];

            source_data[0]={ip:url,port:"0",name:dv1["sysName"],type:dv1["sysType"]};


            for(var i=0;i< m.length;i++){

                var ip=m[i]["ip"];
                //router info
                for(var j=0;j<routers.length;j++){
                    if(ip==routers[j]["ip"]){


                        console.log(ip," 对应的端口号",m[i]["port"],"sysName",routers[j]["sysName"]);
                        var text=ip+" 对应的端口号:"+m[i]["port"]+" sysName:"+routers[j]["sysName"];


                    var tmp="<div class=\"col-xs-12  progress \" style=\"height:30px;\">"+
                            text
                            +"</div>";

                        source_data[source_data.length]={ip:ip,port:m[i]["port"],name:routers[j]["sysName"],type:routers[j]["sysType"]};


                    $(".main").append(tmp);



                    }
                }

                //switch info
                for(var k=0;k<switchs.length;k++){
                    if(ip==switchs[k]["ip"]){

                        console.log(ip,"对应的端口号",m[i]["port"],"sysName",switchs[k]["sysName"]);

                        var text=ip+" 对应的端口号:"+m[i]["port"]+" sysName:"+switchs[k]["sysName"];


                        var tmp="<div class=\"col-xs-12  progress \" style=\"height:30px;\">"+
                            text
                            +"</div>";


                        source_data[source_data.length]={ip:ip,port:m[i]["port"],name:switchs[k]["sysName"],type:switchs[k]["sysType"]};

                        $(".main").append(tmp);


                    }
                }



                //airport info
                for(var l=0;l<airports.length;l++){
                    if(ip==airports[l]["ip"]){


                        console.log(ip," 对应的端口号",m[i]["port"],"sysName",airports[l]["sysName"]);
                        var text=ip+" 对应的端口号:"+m[i]["port"]+" sysName:"+airports[l]["sysName"];


                        var tmp="<div class=\"col-xs-12  progress \" style=\"height:30px;\">"+
                            text
                            +"</div>";



                        source_data[source_data.length]={ip:ip,port:m[i]["port"],name:airports[l]["sysName"],type:airports[l]["sysType"]};


                        $(".main").append(tmp);

                    }
                }


                //others info
                for(var n=0;n<others.length;n++){
                    if(ip==others[n]["ip"]){


                        console.log(ip," 对应的端口号",m[i]["port"],"sysName",others[n]["sysName"]);
                        var text=ip+" 对应的端口号:"+m[i]["port"]+" sysName:"+others[n]["sysName"];


                        var tmp="<div class=\"col-xs-12  progress \" style=\"height:30px;\">"+
                            text
                            +"</div>";


                        source_data[source_data.length]={ip:ip,port:m[i]["port"],name:others[n]["sysName"],type:others[n]["sysType"]};



                        $(".main").append(tmp);

                    }
                }






            }

            /*
            for(var i=0;i< m.length;i++) {
                var ip=m[i]["ip"];
                for (var j = 0; j < sr.length; j++) {
                 if(ip==sr[i]){

                     continue;

                 }else{


                 }
                }

            }
            */



            console.log("final data:",source_data);

            var data={"nodes":[],"edges":[]};
            var nodes=[];
            var edges=[];


            nodes[0]={"id":source_data[0]["port"],"label":source_data[0]["ip"]+"  "+source_data[0]["name"]+" "+source_data[0]["type"],"tooltip":source_data[0]["name"],"x":800,"y":10};





            edges[0]={"source":source_data[0]["port"],"target":source_data[0]["port"],"label":source_data[0]["ip"],"tooltip":source_data[0]["ip"]};






            for(var i=1;i<source_data.length;i++){



                nodes[nodes.length]={"id":source_data[i]["port"],"label":source_data[i]["ip"]+"  "+source_data[i]["name"]+" "+source_data[i]["type"],"tooltip":source_data[i]["name"],"x":250,"y":50+50*i};


                edges[edges.length]={"source":source_data[0]["port"],"target":source_data[i]["port"],"label":source_data[i]["ip"],"tooltip":source_data[i]["ip"]};





            }


            data["nodes"]=nodes;
            data["edges"]=edges;




            if(source_data.length>0){
                $.ajax({
                    url:"op.php",
                    type:"post",
                    data:{data:JSON.stringify(data)},
                    dataType:"json",
                    success:function(e){

                          if(e.success){

                              window.open("lib/image/image.html");


                          }
                }

                });
            }

















        }






    });

});



